home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / lib / tex / inputs / pslatex / lfonts.tex < prev    next >
Text File  |  1991-05-20  |  28KB  |  778 lines

  1. % This file has been converted to use the PostScript fonts
  2. % Graeme McKinstry October 1986
  3. % Modified further by Mario Wolczko, April 1988 - Oct 1989
  4.  
  5. % File LFONTS - Version of 6 May 1986.
  6. %
  7. % This version of LFONTS.TEX is for the CMR fonts.  It was converted
  8. % from the AMR version by David Fuchs on 18 December 1985.
  9. %
  10. % This file needs to be customized for the fonts available at a particular
  11. % site.  There are three places where changes need to be made.  They
  12. % can be found by searching this file for the string  FONT-CUSTOMIZING.
  13. %
  14. % FONT CONVENTIONS
  15. %
  16. % A TYPESTYLE COMMAND is something like \it that defines a type style.
  17. % Each style command \xx is defined to be \protect\pxx, where 
  18. % \pxx is defined to choose the correct font for the current size.
  19. % This allows style commands to appear in 'unsafe' arguments where
  20. % protection is required.
  21. %
  22. % A SIZE COMMAND is something like \normalsize that defines a type size.
  23. % It is defined by the document style.  However, \normalsize is handled
  24. % somewhat differently because it is called so often--e.g., on every
  25. % page by the output routine.  The document style defines \@normalsize
  26. % instead of \normalsize.
  27. % A ONE-SIZE typestyle is one that exists only in the \normalsize size.
  28. %
  29. % A FONT-SIZE COMMAND is one that defines \textfont, \scriptfont and 
  30. % \scriptscriptfont for the font families corresponding to preloaded fonts,
  31. % as well as the typestyle commands for the preloaded fonts.  Each
  32. % font-size command has an associated @fontsize command, having the same
  33. % name except for an '@' at the front.   All font-size commands are defined 
  34. % in LFONTS.  The naming convention is that a fifteenpt font has a font-size
  35. % name \xvpt, and so on.
  36. %
  37. % Each size command \SIZE executes the command
  38. %             \@setsize\SIZE{BASELINESKIP}\FONTSIZE\@FONTSIZE
  39. % which does the following.
  40. %   0. Executes \@nomath\SIZE to issue warning if in math mode.
  41. %   1. \let \@currsize = \SIZE  
  42. %   2. Sets \strutbox to a strut of height .7 * BASELINESKIP and
  43. %      depth .3 * BASELINESKIP
  44. %   3. Sets \baselineskip to \baselinestretch * BASELINESKIP 
  45. %      and 
  46. %   4. Calls \FONTSIZE 
  47. %   5. Executes the \@FONTSIZE command.
  48. % It should then define all the typestyle commands not defined by the font-size
  49. % command, except for the one-size type styles. A typestyle command for which
  50. % the corresponding font exists but is not preloaded is defined to expand to a
  51. % \@getfont command.  A typestyle whose font does not exist is defined to 
  52. % expand to a \@subfont command.
  53. %
  54. % A one-size typestyle whose font is not preloaded is defined to expand to
  55. % a \@onesizefont command.
  56. %
  57. % \em is defined to be \it inside an unslanted style and \rm inside a
  58. % slanted style.  An \em command in a section title will produce a \pem
  59. % command in the table of contents.
  60. %
  61.  
  62. % USES PS (PostScript) fonts
  63. % this command is used when the user has asked for something that is
  64. % unavailable in the PostScript fonts
  65. \def\@PSignore#1{\@warning{\string#1 not supported in PS-LaTeX; ignoring it}}
  66. \def\@PSsub#1#2{#2%
  67.   \@warning{\string#1 not supported in PS-LaTeX; substituting \string#2}}
  68.  
  69. % this is used if PS-LaTeX is built without CMSY, CMMI or LASY
  70. \def\@PSnofont#1{\@warning{\string#1 requires extra fonts in PS-LaTeX}}
  71.  
  72. \def\em{\protect\pem{}}
  73. \def\pem{\ifdim \fontdimen\@ne\font >\z@ \rm \else \it \fi}
  74.  
  75. % the following magic is used to ensure that all font styles in the
  76. % normal size are loaded as soon as the job starts
  77. \def\normalsize{\@normalsize\bf\sl\tt\sf\sc\rm
  78.   \global\let\normalsize\@@normalsize}
  79. \def\@@normalsize{\ifx\@currsize\normalsize \rm \else \@normalsize\fi}
  80.  
  81. % \load{SIZE}{STYLE} : Solves anomaly of loaded-on-demand font
  82. %    used for first time in math mode.  Give this command outside math
  83. %    mode, before formula using it for first time.
  84. \def\load#1#2{\let\@tempa\@currsize \let\@currsize\relax #1#2\@tempa}
  85.  
  86. % \newfont{\CMD}{FONT} defines \CMD to be the font FONT.
  87. %    It is equivalent to \font \CMD = FONT
  88. % \symbol{NUM} == \char NUM
  89.  
  90. \def\newfont#1#2{\@ifdefinable #1{\font #1=#2\relax}}
  91. \def\symbol#1{\char #1\relax}
  92.  
  93.  
  94.  
  95. % \@getfont \STYLE \FAM \@FONTSIZE{LOADING.INFO}
  96. %   \STYLE       = style command
  97. %   \FAM         = a control sequence defined by \newfam\FAM
  98. %   \@FONTSIZE   = the @fontsize command for the current size. 
  99. %   LOADING.INFO = information needed to load the font--e.g., 
  100. %                  cmtti10 \magstep 2
  101. %   Does the following, where \FONTNAME denotes a new unique, untypeable
  102. %   font name:
  103. %    1. Executes  \font \FONTNAME = LOADING.INFO 
  104. %    2. Appends '\textfont FAM \FONTNAME \def\STYLE{\fam \FAM \FONTNAME}' 
  105. %       to the definition of \@FONTSIZE.
  106. %    3. Executes \@FONTSIZE \STYLE.
  107. %
  108. % \@nohyphens\STYLE\@FONTSIZE
  109. %   Used right after \@getfont to set \hyphenchar of the new font to -1,
  110. %   thereby prohibiting hyphenation.  It is used with \tt fonts.
  111. %   (\@nohyphens was added on 12/18/85)
  112. %
  113. % \@subfont \STYLE \REPSTYLE 
  114. %   \STYLE, \REPSTYLE = type style commands.
  115. %   Types warning message and defines uses \REPSTYLE.
  116. %
  117. % \@onesizefont \STYLE {LOADING.INFO}
  118. %   Defines \STYLE to be a typestyle that exists only for the \normalsize
  119. %   size.  It produces the font specified by LOADING.INFO
  120. %
  121. % \@addfontinfo\@FONTSIZE{DEFS}
  122. %    Expands DEFS and adds to the definition of \@FONTSIZE. Items that should 
  123. %    not be expanded should be protected with \@prtct---except no protection
  124. %    is needed for '\def\foo', only for the contents of the definition.
  125. %
  126. % \@nomath\CS : Types a warning '\CS used in math mode' if encountered
  127. %    in math mode.
  128.  
  129. % Remove \outer from definition of \newfam
  130. \def\newfam{\alloc@8\fam\chardef\sixt@@n}
  131.  
  132. \def\@setsize#1#2#3#4{\@nomath#1\let\@currsize#1\baselineskip
  133.    #2\setbox\strutbox\hbox{\vrule height.7\baselineskip
  134.       depth.3\baselineskip width\z@}\baselineskip\baselinestretch\baselineskip
  135.    \normalbaselineskip\baselineskip#3#4}
  136.  
  137. \newif\if@bold
  138.  
  139. \let\@prtct=\relax
  140.  
  141. \def\@addfontinfo#1#2{{\def\@prtct{\noexpand\@prtct\noexpand}\def\def{\noexpand
  142.     \def\noexpand}\xdef#1{#1#2}}}
  143.  
  144. \def\@getfont#1#2#3#4{\@ifundefined{\string #1\string #3}{\global\expandafter
  145.     \font \csname \string #1\string #3\endcsname #4\relax 
  146.      \@addfontinfo#3{\textfont #2\csname \string #1\string #3\endcsname 
  147.      \scriptfont #2\csname \string #1\string #3\endcsname 
  148.      \scriptscriptfont #2\csname \string #1\string #3\endcsname 
  149.      \def#1{\fam #2\csname\string #1\string #3\endcsname}}}{}#3#1}
  150.  
  151. \def\@nohyphens#1#2{\global\expandafter \hyphenchar\csname 
  152.    \string #1\string #2\endcsname \m@ne}
  153.  
  154. \def\@subfont#1#2{\@warning{No \string#1\space typeface in 
  155.         this size, using \string#2}#2}
  156.  
  157. \def\@onesizefont#1#2{\expandafter\newfam\csname fm\string#1\endcsname
  158.   \global\expandafter\font\csname ft\string#1\endcsname #2\relax
  159.   \gdef#1{\ifx \@currsize\normalsize \@ftfam#1\else
  160.   \@warning{Typeface \string#1\space available only in 
  161.   \string\normalsize, using \string\rm}\gdef #1{\ifx \@currsize\normalsize 
  162.   \textfont\@fontfam#1 \scriptfont\@fontfam#1 \scriptscriptfont
  163.   \@fontfam#1\@ftfam#1\else \rm\fi}#1\fi}#1}
  164.  
  165. \def\@ftfam#1{\fam\csname fm\string#1\endcsname\csname ft\string#1\endcsname}
  166.  
  167. \def\@nomath#1{\ifmmode \@warning{\string#1\space in math mode.}\fi}
  168. \def\@nomathbold{\ifmmode \@warning{\string\mathbold\space in math mode.}\fi}
  169.  
  170. % The following definitions save token space.  E.g., using \@height 
  171. % instead of height saves 5 tokens at the cost in time of one macro 
  172. % expansion.
  173.  
  174. \def\@height{height}
  175. \def\@depth{depth}
  176. \def\@width{width}
  177.  
  178. \def\@magscale#1{ scaled \magstep #1}
  179. \def\@halfmag{ scaled \magstephalf}
  180. \def\@ptscale#1{ scaled #100}
  181.  
  182. % FONT-CUSTOMIZING see contents of fntchoice.tex
  183. \input fntchoice
  184.  
  185. % none of the CM fonts (except cmex10) are accessible unless the
  186. % following are true 
  187. \newif\if@usecmsy \@usecmsytrue    % is the CMSY font available
  188. \newif\if@usecmmi \@usecmmitrue    % is CMMI font available
  189. % same for LaTeX symbols font
  190. \newif\if@uselasy \@uselasytrue    % is LASY font available
  191.  
  192. % There are no alternative choices for these fonts at the present
  193. \def\@msyten{cmsy10}
  194. \def\@mmiten{cmmi10}
  195. \def\@lasyten{lasy10}
  196.  
  197. % \@font\NAME{LOADING.INFO}
  198. % Defines \NAME so that when expanded for the first time it executes
  199. %     \global\font\NAME=LOADING.INFO \NAME
  200. % This cannot be used for fonts that have characters referenced by
  201. % \mathchardef, such as the Symbol, CMSY, CMMI, CMEX, and LASY fonts
  202. \def\@font#1#2{\def#1{\global\font#1=#2#1}}
  203. % \@ttfont
  204. %    same as \@font, but sets \hyphenchar to -1
  205. \def\@ttfont#1#2{\def#1{\global\font#1=#2#1\hyphenchar#1=-1}}
  206.  
  207. % font loading commands for specific (unusual) fonts
  208. \def\@loadcmsy#1#2{\if@usecmsy \font#1=#2 \skewchar#1='60 \fi}
  209. \def\@loadcmmi#1#2{\if@usecmmi \font#1=#2 \skewchar#1='177 \fi}
  210. \def\@loadsy#1#2{\font#1=#2 \skewchar#1='242 }
  211. \def\@loadtt#1#2{\font#1=#2 \hyphenchar#1=-1 }
  212.  
  213. %% FONT-CUSTOMIZING:  The following \font commands define the
  214. %% preloaded LaTeX fonts.  Font names should be changed to cause
  215. %% different fonts to be loaded in place of these particular fonts.
  216. %% \font commands can be replaced with \@font commands to reduce the
  217. %% number of preloaded fonts.
  218.  
  219. % five point
  220.  \font\fivrm  =  \@rm\@ptscale5
  221.  \font\fivit  =  \@it\@ptscale5
  222.  \@loadsy\fivsy    {\@sy\@ptscale5}
  223.  \@font\fivbf    {\@bf\@ptscale5}
  224.  \@font\fivsl    {\@sl\@ptscale5}
  225.  \@ttfont\fivtt    {\@tt\@ptscale5}
  226.  \@font\fivsf    {\@sf\@ptscale5}
  227.  \@font\fivsc    {\@sc\@ptscale5}
  228.  \font\fivms  =  \@ms\@ptscale5
  229.  \@loadcmsy\fivcmsy{cmsy5}
  230.  \@loadcmmi\fivmi{cmmi5}
  231.  \font\fivly  =  lasy5
  232.  
  233. % six point
  234.  \font\sixrm  =  \@rm\@ptscale6
  235.  \font\sixit  =  \@it\@ptscale6
  236.  \@loadsy\sixsy    {\@sy\@ptscale6}
  237.  \@font\sixbf    {\@bf\@ptscale6}
  238.  \@font\sixsl    {\@sl\@ptscale6}
  239.  \@ttfont\sixtt    {\@tt\@ptscale6}
  240.  \@font\sixsf    {\@sf\@ptscale6}
  241.  \@font\sixsc    {\@sc\@ptscale6}
  242.  \font\sixms  =  \@ms\@ptscale6
  243.  \@loadcmsy\sixcmsy{cmsy6}
  244.  \@loadcmmi\sixmi{cmmi6}
  245.  \font\sixly  =  lasy6
  246.  
  247. % seven point 
  248.  \font\sevrm  =  \@rm\@ptscale7
  249.  \font\sevit  =  \@it\@ptscale7
  250.  \@loadsy\sevsy    {\@sy\@ptscale7}
  251.  \@font\sevbf    {\@bf\@ptscale7}
  252.  \@font\sevsl    {\@sl\@ptscale7}
  253.  \@ttfont\sevtt    {\@tt\@ptscale7}
  254.  \@font\sevsf    {\@sf\@ptscale7}
  255.  \@font\sevsc    {\@sc\@ptscale7}
  256.  \font\sevms  =  \@ms\@ptscale7
  257.  \@loadcmsy\sevcmsy{cmsy7}
  258.  \@loadcmmi\sevmi{cmmi7}
  259.  \font\sevly  =  lasy7
  260.  
  261. % eight point
  262.  \font\egtrm  =  \@rm\@ptscale8
  263.  \font\egtit  =  \@it\@ptscale8
  264.  \@loadsy\egtsy    {\@sy\@ptscale8}
  265.  \@font\egtbf    {\@bf\@ptscale8}
  266.  \@font\egtsl    {\@sl\@ptscale8}
  267.  \@ttfont\egttt    {\@tt\@ptscale8}
  268.  \@font\egtsf    {\@sf\@ptscale8}
  269.  \@font\egtsc    {\@sc\@ptscale8}
  270.  \font\egtms  =  \@ms\@ptscale8
  271.  \@loadcmsy\egtcmsy{cmsy8}
  272.  \@loadcmmi\egtmi{cmmi8}
  273.  \font\egtly  =  lasy8
  274.  
  275. % nine point
  276.  \font\ninrm  =  \@rm\@ptscale9
  277.  \font\ninit  =  \@it\@ptscale9
  278.  \@loadsy\ninsy    {\@sy\@ptscale9}
  279.  \font\ninbf  =  \@bf\@ptscale9 
  280.  \@font\ninsl    {\@sl\@ptscale9}
  281.  \@loadtt\nintt    {\@tt\@ptscale9}
  282.  \@font\ninsf    {\@sf\@ptscale9}
  283.  \@font\ninsc    {\@sc\@ptscale9}
  284.  \font\ninms  =  \@ms\@ptscale9
  285.  \@loadcmsy\nincmsy{cmsy9}
  286.  \@loadcmmi\ninmi{cmmi9}
  287.  \font\ninly  =  lasy9
  288.  
  289. % ten point
  290.  \font\tenrm  =  \@rm\@magscale0
  291.  \font\tenit  =  \@it\@magscale0
  292.  \@loadsy\tensy    {\@sy\@magscale0}
  293.  \font\tenbf  =  \@bf\@magscale0
  294.  \font\tensl  =  \@sl\@magscale0
  295.  \@loadtt\tentt    {\@tt\@magscale0}
  296.  \font\tensf  =  \@sf\@magscale0
  297.  \font\tensc  =  \@sc\@magscale0
  298.  \font\tenms  =  \@ms\@magscale0
  299.  \@loadcmsy\tencmsy{\@msyten}
  300.  \@loadcmmi\tenmi{\@mmiten}
  301.  \font\tenly  =  \@lasyten
  302.  
  303. % eleven point
  304.  \font\elvrm  =  \@rm\@halfmag
  305.  \font\elvit  =  \@it\@halfmag
  306.  \@loadsy\elvsy    {\@sy\@halfmag}
  307.  \font\elvbf  =  \@bf\@halfmag
  308.  \font\elvsl  =  \@sl\@halfmag
  309.  \@loadtt\elvtt    {\@tt\@halfmag}
  310.  \font\elvsf  =  \@sf\@halfmag
  311.  \font\elvsc  =  \@sc\@halfmag
  312.  \font\elvms  =  \@ms\@halfmag
  313.  \@loadcmsy\elvcmsy{\@msyten\@halfmag}
  314.  \@loadcmmi\elvmi{\@mmiten\@halfmag}
  315.  \font\elvly  =  \@lasyten\@halfmag
  316.  
  317. % twelve point
  318.  \font\twlrm  =  \@rm\@magscale1
  319.  \font\twlit  =  \@it\@magscale1
  320.  \@loadsy\twlsy    {\@sy\@magscale1}
  321.  \font\twlbf  =  \@bf\@magscale1
  322.  \font\twlsl  =  \@sl\@magscale1
  323.  \@loadtt\twltt    {\@tt\@magscale1}
  324.  \font\twlsf  =  \@sf\@magscale1
  325.  \font\twlsc  =  \@sc\@magscale1
  326.  \font\twlms  =  \@ms\@magscale1
  327.  \@loadcmsy\twlcmsy{\@msyten\@magscale1}
  328.  \@loadcmmi\twlmi{cmmi12}
  329.  \font\twlly  =  \@lasyten\@magscale1
  330.  
  331. % fourteen point
  332.  \font\frtnrm  = \@rm\@magscale2
  333.  \font\frtnit  = \@it\@magscale2
  334.  \@loadsy\frtnsy{\@sy\@magscale2}
  335.  \font\frtnbf  = \@bf\@magscale2
  336.  \@font\frtnsl    {\@sl\@magscale2}
  337.  \@font\frtntt    {\@tt\@magscale2}
  338.  \@font\frtnsf    {\@sf\@magscale2}
  339.  \@font\frtnsc    {\@sc\@magscale2}
  340.  \font\frtnms  = \@ms\@magscale2
  341.  \@loadcmsy\frtncmsy{\@msyten\@magscale2}
  342.  \@loadcmmi\frtnmi{cmmi12\@magscale1}
  343.  \font\frtnly  = \@lasyten\@magscale2
  344.  
  345. % seventeen point
  346.  \font\svtnrm  = \@rm\@magscale3
  347.  \font\svtnit  = \@it\@magscale3
  348.  \@loadsy\svtnsy{\@sy \@magscale3}
  349.  \font\svtnbf  = \@bf\@magscale3
  350.  \@font\svtnsl    {\@sl\@magscale3}
  351.  \@font\svtntt    {\@tt\@magscale3}
  352.  \@font\svtnsf    {\@sf\@magscale3}
  353.  \@font\svtnsc    {\@sc\@magscale3}
  354.  \font\svtnms  = \@ms\@magscale3
  355.  \@loadcmsy\svtncmsy{\@msyten\@magscale3}
  356.  \@loadcmmi\svtnmi{cmmi12\@magscale2}
  357.  \font\svtnly  = \@lasyten\@magscale3
  358.  
  359. % twenty point
  360.  \font\twtyrm  = \@rm\@magscale4
  361.  \font\twtyit  = \@it\@magscale4
  362.  \@loadsy\twtysy{\@sy \@magscale4}
  363.  \@font\twtybf    {\@bf\@magscale4}
  364.  \@font\twtysl    {\@sl\@magscale4}
  365.  \@font\twtytt    {\@tt\@magscale4}
  366.  \@font\twtysf    {\@sf\@magscale4}
  367.  \@font\twtysc    {\@sc\@magscale4}
  368.  \font\twtyms  = \@ms\@magscale4
  369.  \@loadcmsy\twtycmsy{\@msyten \@magscale4}
  370.  \@loadcmmi\twtymi{\@mmiten \@magscale4}
  371.  \font\twtyly  = \@lasyten \@magscale4
  372.  
  373. % twenty-five point
  374.  \font\twfvrm  = \@rm\@magscale5
  375.  \font\twfvit  = \@it\@magscale5
  376.  \@loadsy\twfvsy{\@sy \@magscale5}
  377.  \@font\twfvbf    {\@bf\@magscale5}
  378.  \@font\twfvsl    {\@sl\@magscale5}
  379.  \@font\twfvtt    {\@tt\@magscale5}
  380.  \@font\twfvsf    {\@sf\@magscale5}
  381.  \@font\twfvsc    {\@sc\@magscale5}
  382.  \font\twfvms  = \@ms\@magscale5
  383.  \@loadcmsy\twfvcmsy{\@msyten \@magscale5}
  384.  \@loadcmmi\twfvmi{\@mmiten \@magscale5}
  385.  \font\twfvly  = \@lasyten\@magscale5
  386.  
  387. % Math extension
  388.  \font\tenex   = cmex10
  389.  
  390. \if@uselasy
  391.  % line & circle fonts
  392.  \font\tenln    = line10
  393.  \font\tenlnw   = linew10
  394.  \font\tencirc  = circle10
  395.  \font\tencircw = circlew10
  396.  
  397.  % Change made 6 May 86: `\@warning' replaced by `\immediate\write 15' 
  398.  % since it's not defined when lfonts.tex is read by lplain.tex.
  399.  %
  400.  \ifnum\fontdimen8\tenln=\fontdimen8\tencirc \else 
  401.    \immediate\write 15{Incompatible thin line and circle fonts}\fi
  402.  \ifnum\fontdimen8\tenlnw=\fontdimen8\tencircw \else 
  403.    \immediate\write 15{Incompatible thick line and circle fonts}\fi
  404. \fi
  405.  
  406. % protected font names
  407. \def\rm{\protect\prm}
  408. \def\it{\protect\pit}
  409. \def\bf{\protect\pbf}
  410. \def\sl{\protect\psl}
  411. \def\sf{\protect\psf}
  412. \def\sc{\protect\psc}
  413. \def\tt{\protect\ptt}
  414.  
  415. % families
  416.  
  417. \def\hexnumber@#1{\ifnum#1<10 \number#1\else
  418.  \ifnum#1=10 A\else\ifnum#1=11 B\else\ifnum#1=12 C\else
  419.  \ifnum#1=13 D\else\ifnum#1=14 E\else
  420.  \ifnum#1=15 F\fi\fi\fi\fi\fi\fi\fi}
  421.  
  422. % since math italic and text italic are the same, \itfam is not required
  423. \let\itfam\@ne
  424. \newfam\slfam      % \sl is family 4
  425. \newfam\bffam      % \bf is family 5
  426. \newfam\ttfam      % \tt is family 6
  427. \newfam\sffam      % \sf is family 7
  428. \newfam\scfam      % \sc is family 8
  429. \newfam\msfam      % \ms is family 9 (slanted Symbol)
  430. \edef\ms@{\hexnumber@\msfam}
  431.  
  432. \if@uselasy
  433.  \newfam\lyfam
  434.  \edef\lasy@{\hexnumber@\lyfam}
  435. \fi
  436.  
  437. \if@usecmsy
  438.  \newfam\cmsyfam
  439.  \def\cal{\fam\cmsyfam}
  440.  \edef\cmsy@{\hexnumber@\cmsyfam}
  441. \else
  442.  \def\cal{\@PSnofont\cal}
  443. \fi
  444.  
  445. \if@usecmmi
  446.  \newfam\cmmifam
  447.  \edef\cmmi@{\hexnumber@\cmmifam}
  448. \fi
  449.  
  450. \def\mit{\fam\msfam} % slanted uppercase Greek
  451.  
  452.  
  453. \def\@setstrut{\setbox\strutbox=\hbox{\vrule \@height .7\baselineskip
  454.     \@depth .3\baselineskip \@width\z@}}
  455.  
  456. % no bold math available in PostScript
  457. \def\boldmath{\@PSignore\boldmath}
  458. \def\unboldmath{\@PSignore\unboldmath}
  459.  
  460. %% FONT-CUSTOMIZING: The commands \vpt, \vipt, ... , \xxvpt perform all
  461. %% the declarations needed to change the type size to 5pt, 6pt, ... ,
  462. %% 25pt.  To see how this works, consider the definition of \ixpt,
  463. %% which determines the fonts used in a 9pt type size.  The command
  464. %%    \def\prm{\fam\rmfam\ninrm}
  465. %% means that the \rm command causes the preloaded \ninrm font to
  466. %% be used--this font was defined earlier with a \font\ninrm...
  467. %% command.  The command
  468. %%     \@setfam\rmfam\ninrm\sixrm\fivrm
  469. %% tell TeX to use the \ninrm, \sixrm and \fivrm fonts for
  470. %% text, script and scriptscript math size for the 9pt size.  
  471. %% 
  472. %% The command 
  473. %%     \def\pbf{\@getfam\pbf\bffam\@ixpt\ninbf\sixbf\fivbf}
  474. %% declares \bf to use either pre-loaded or loaded-on-demand
  475. %% fonts--namely, the fonts \ninbf, \sixbf and \fivbf.  Presumably,
  476. %% they were earlier declared using the \font or \@font commands.
  477. %%
  478. %% If you decided that preloading the fonts for a bold, 9pt size was
  479. %% unnecessary, then you would alter the declaration of \ninbf to use
  480. %% \@font rather than \font.
  481. %% Note that you can only do this for the \bf, \sl, \tt, \sf and \sc
  482. %% families; the other fonts are used in math mode and must be
  483. %% preloaded. 
  484. %%
  485. %% The command
  486. %%     \def\ptt{\@subfont\tt\rm}
  487. %% declares that the \tt font is unavailable in the 7pt size, so
  488. %% the \rm font is used instead.  (The substituted type style should
  489. %% correspond to a preloaded size.)
  490.  
  491. % \@getfam\STYLE\FAM\SIZE\TFONT\SFONT\SSFONT\CMND
  492. %  Defines \def\STYLE{\fam\FAM\TFONT\CMND}
  493. %  Executes
  494. %    \fam\FAM
  495. %    \SSFONT\scriptscriptfont\FAM\SSFONT
  496. %    \SFONT\scriptfont\FAM\SFONT
  497. %    \TFONT\textfont\FAM\TFONT\CMND
  498. % (the extra invocations of \SSFONT etc cause preloaded fonts to be
  499. % loaded.)
  500. % Tests to see if the unique name madee from \STYLE and \SIZE is
  501. % defined.  If not, defines it and adds the definition
  502. %     \def\STYLE{\fam\FAM\TFONT\CMND} \textfont\FAM\TFONT
  503. %        \scriptfont\FAM\SFONT \scriptscriptfont\FAM\SSFONT
  504. % to the definition of \SIZE
  505. \def\@getfam#1#2#3#4#5#6#7{%
  506.   \def#1{\fam#2#4#7}%
  507.   \fam#2\relax #6\scriptscriptfont#2#6%
  508.   #5\scriptfont#2#5\relax #4\textfont#2#4#7%
  509.   \@ifundefined{\string#1\string#3}{%
  510.     \global\expandafter\def\csname\string#1\string#3\endcsname{}%
  511.     \@addfontinfo#3{\def#1{\fam#2#4\@prtct#7}\textfont#2\noexpand#4%
  512.       \scriptfont#2\noexpand#5\scriptscriptfont#2\noexpand#6}}{}}
  513.  
  514. % \setfam\FAM\TFONT\SFONT\SSFONT
  515. %    set \TFONT, \SFONT and \SSFONT as the text, script and
  516. % scriptscript fonts in family \FAM.
  517. \def\@setfam#1#2#3#4{#2\textfont#1#2\relax #3\scriptfont#1#3\relax
  518.   #4\scriptscriptfont#1#4}
  519.  
  520. % These are constant throughout the life of LaTeX ... must not
  521. % reassign to any of them anywhere.
  522. \textfont\thr@@\tenex
  523. \scriptfont\thr@@\tenex
  524. \scriptscriptfont\thr@@\tenex
  525.  
  526. \def\vpt{%
  527. \def\prm{\fam\z@\fivrm\@dononsf}\@setfam\z@\fivrm\fivrm\fivrm
  528. \def\pit{\fam\@ne\fivit\@dononsf}\@setfam\@ne\fivit\fivit\fivit
  529. \@setfam\tw@\fivsy\fivsy\fivsy
  530. \def\pbf{\@getfam\pbf\bffam\@vpt\fivbf\fivbf\fivbf\@dononsf}%
  531. \def\psl{\@getfam\psl\slfam\@vpt\fivsl\fivsl\fivsl\@dononsf}%
  532. \def\ptt{\@getfam\ptt\ttfam\@vpt\fivtt\fivtt\fivtt\@dononsf}%
  533. \def\psf{\@getfam\psf\sffam\@vpt\fivsf\fivsf\fivsf\@dosfchars}%
  534. \def\psc{\@getfam\psc\scfam\@vpt\fivsc\fivsc\fivsc\@dononsf}%
  535. \@setfam\msfam\fivms\fivms\fivms
  536. \@setfam\cmsyfam\fivcmsy\fivcmsy\fivcmsy
  537. \@setfam\cmmifam\fivmi\fivmi\fivmi
  538. \@setfam\lyfam\fivly\fivly\fivly
  539. \@setstrut\rm}
  540.  
  541. \def\@vpt{}
  542.  
  543. \def\vipt{%
  544. \def\prm{\fam\z@\sixrm\@dononsf}\@setfam\z@\sixrm\fivrm\fivrm
  545. \def\pit{\fam\@ne\sixit\@dononsf}\@setfam\@ne\sixit\fivit\fivit
  546. \@setfam\tw@\sixsy\fivsy\fivsy
  547. \def\pbf{\@getfam\pbf\bffam\@vipt\sixbf\fivbf\fivbf\@dononsf}%
  548. \def\psl{\@getfam\psl\slfam\@vipt\sixsl\sixsl\sixsl\@dononsf}%
  549. \def\ptt{\@getfam\ptt\ttfam\@vipt\sixtt\sixtt\sixtt\@dononsf}%
  550. \def\psf{\@getfam\psf\sffam\@vipt\sixsf\sixsf\sixsf\@dosfchars}%
  551. \def\psc{\@getfam\psc\scfam\@vipt\sixsc\sixsc\sixsc\@dononsf}%
  552. \@setfam\msfam\sixms\fivms\fivms
  553. \@setfam\cmsyfam\sixcmsy\fivcmsy\fivcmsy
  554. \@setfam\cmmifam\sixmi\fivmi\fivmi
  555. \@setfam\lyfam\sixly\fivly\fivly
  556. \@setstrut\rm}
  557.  
  558. \def\@vipt{}
  559.  
  560. \def\viipt{%
  561. \def\prm{\fam\z@\sevrm\@dononsf}\@setfam\z@\sevrm\fivrm\fivrm
  562. \def\pit{\fam\@ne\sevit\@dononsf}\@setfam\@ne\sevit\fivit\fivit
  563. \@setfam\tw@\sevsy\fivsy\fivsy
  564. \def\pbf{\@getfam\pbf\bffam\@viipt\sevbf\fivbf\fivbf\@dononsf}%
  565. \def\psl{\@getfam\psl\slfam\@viipt\sevsl\sevsl\sevsl\@dononsf}%
  566. \def\ptt{\@getfam\ptt\ttfam\@viipt\sevtt\sevtt\sevtt\@dononsf}%
  567. \def\psf{\@getfam\psf\sffam\@viipt\sevsf\sevsf\sevsf\@dosfchars}%
  568. \def\psc{\@getfam\psc\scfam\@viipt\sevsc\sevsc\sevsc\@dononsf}%
  569. \@setfam\msfam\sevms\fivms\fivms
  570. \@setfam\cmsyfam\sevcmsy\fivcmsy\fivcmsy
  571. \@setfam\cmmifam\sevmi\fivmi\fivmi
  572. \@setfam\lyfam\sevly\fivly\fivly
  573. \@setstrut\rm}
  574.  
  575. \def\@viipt{}
  576.  
  577. \def\viiipt{%
  578. \def\prm{\fam\z@\egtrm\@dononsf}\@setfam\z@\egtrm\sixrm\fivrm
  579. \def\pit{\fam\@ne\egtit\@dononsf}\@setfam\@ne\egtit\sixit\fivit
  580. \@setfam\tw@\egtsy\sixsy\fivsy
  581. \def\pbf{\@getfam\pbf\bffam\@viiipt\egtbf\sixbf\fivbf\@dononsf}%
  582. \def\psl{\@getfam\psl\slfam\@viiipt\egtsl\egtsl\egtsl\@dononsf}%
  583. \def\ptt{\@getfam\ptt\ttfam\@viiipt\egttt\egttt\egttt\@dononsf}%
  584. \def\psf{\@getfam\psf\sffam\@viiipt\egtsf\egtsf\egtsf\@dosfchars}%
  585. \def\psc{\@getfam\psc\scfam\@viiipt\egtsc\egtsc\egtsc\@dononsf}%
  586. \@setfam\msfam\egtms\sixms\fivms
  587. \@setfam\cmsyfam\egtcmsy\sixcmsy\fivcmsy
  588. \@setfam\cmmifam\egtmi\sixmi\fivmi
  589. \@setfam\lyfam\egtly\sixly\fivly
  590. \@setstrut\rm}
  591.  
  592. \def\@viiipt{}
  593.  
  594. \def\ixpt{%
  595. \def\prm{\fam\z@\ninrm\@dononsf}\@setfam\z@\ninrm\sixrm\fivrm
  596. \def\pit{\fam\@ne\ninit\@dononsf}\@setfam\@ne\ninit\sixit\fivit
  597. \@setfam\tw@\ninsy\sixsy\fivsy
  598. \def\pbf{\@getfam\pbf\bffam\@ixpt\ninbf\sixbf\fivbf\@dononsf}%
  599. \def\psl{\@getfam\psl\slfam\@ixpt\ninsl\ninsl\ninsl\@dononsf}%
  600. \def\ptt{\@getfam\ptt\ttfam\@ixpt\nintt\nintt\nintt\@dononsf}%
  601. \def\psf{\@getfam\psf\sffam\@ixpt\ninsf\ninsf\ninsf\@dosfchars}%
  602. \def\psc{\@getfam\psc\scfam\@ixpt\ninsc\ninsc\ninsc\@dononsf}%
  603. \@setfam\msfam\ninms\sixms\fivms
  604. \@setfam\cmsyfam\nincmsy\sixcmsy\fivcmsy
  605. \@setfam\cmmifam\ninmi\sixmi\fivmi
  606. \@setfam\lyfam\ninly\sixly\fivly
  607. \@setstrut\rm}
  608.  
  609. \def\@ixpt{}
  610.  
  611. \def\xpt{%
  612. \def\prm{\fam\z@\tenrm\@dononsf}\@setfam\z@\tenrm\sevrm\fivrm
  613. \def\pit{\fam\@ne\tenit\@dononsf}\@setfam\@ne\tenit\sevit\fivit
  614. \@setfam\tw@\tensy\sevsy\fivsy
  615. \def\pbf{\@getfam\pbf\bffam\@xpt\tenbf\sevbf\fivbf\@dononsf}%
  616. \def\psl{\@getfam\psl\slfam\@xpt\tensl\tensl\tensl\@dononsf}%
  617. \def\ptt{\@getfam\ptt\ttfam\@xpt\tentt\tentt\tentt\@dononsf}%
  618. \def\psf{\@getfam\psf\sffam\@xpt\tensf\tensf\tensf\@dosfchars}%
  619. \def\psc{\@getfam\psc\scfam\@xpt\tensc\tensc\tensc\@dononsf}%
  620. \@setfam\msfam\tenms\sevms\fivms
  621. \@setfam\cmsyfam\tencmsy\sevcmsy\fivcmsy
  622. \@setfam\cmmifam\tenmi\sevmi\fivmi
  623. \@setfam\lyfam\tenly\sevly\fivly
  624. \@setstrut\rm}
  625.  
  626. \def\@xpt{}
  627.  
  628. \def\xipt{%
  629. \def\prm{\fam\z@\elvrm\@dononsf}\@setfam\z@\elvrm\egtrm\sixrm
  630. \def\pit{\fam\@ne\elvit\@dononsf}\@setfam\@ne\elvit\egtit\sixit
  631. \@setfam\tw@\elvsy\egtsy\sixsy
  632. \def\pbf{\@getfam\pbf\bffam\@xipt\elvbf\egtbf\sixbf\@dononsf}%
  633. \def\psl{\@getfam\psl\slfam\@xipt\elvsl\elvsl\elvsl\@dononsf}%
  634. \def\ptt{\@getfam\ptt\ttfam\@xipt\elvtt\elvtt\elvtt\@dononsf}%
  635. \def\psf{\@getfam\psf\sffam\@xipt\elvsf\elvsf\elvsf\@dosfchars}%
  636. \def\psc{\@getfam\psc\scfam\@xipt\elvsc\elvsc\elvsc\@dononsf}%
  637. \@setfam\msfam\elvms\egtms\sixms
  638. \@setfam\cmsyfam\elvcmsy\egtcmsy\sixcmsy
  639. \@setfam\cmmifam\elvmi\egtmi\sixmi
  640. \@setfam\lyfam\elvly\egtly\sixly
  641. \@setstrut\rm}
  642.  
  643. \def\@xipt{}
  644.  
  645. \def\xiipt{%
  646. \def\prm{\fam\z@\twlrm\@dononsf}\@setfam\z@\twlrm\egtrm\sixrm
  647. \def\pit{\fam\@ne\twlit\@dononsf}\@setfam\@ne\twlit\egtit\sixit
  648. \@setfam\tw@\twlsy\egtsy\sixsy
  649. \def\pbf{\@getfam\pbf\bffam\@xiipt\twlbf\egtbf\sixbf\@dononsf}%
  650. \def\psl{\@getfam\psl\slfam\@xiipt\twlsl\twlsl\twlsl\@dononsf}%
  651. \def\ptt{\@getfam\ptt\ttfam\@xiipt\twltt\twltt\twltt\@dononsf}%
  652. \def\psf{\@getfam\psf\sffam\@xiipt\twlsf\twlsf\twlsf\@dosfchars}%
  653. \def\psc{\@getfam\psc\scfam\@xiipt\twlsc\twlsc\twlsc\@dononsf}%
  654. \@setfam\msfam\twlms\egtms\sixms
  655. \@setfam\cmsyfam\twlcmsy\egtcmsy\sixcmsy
  656. \@setfam\cmmifam\twlmi\egtmi\sixmi
  657. \@setfam\lyfam\twlly\egtly\sixly
  658. \@setstrut\rm}
  659.  
  660. \def\@xiipt{}
  661.  
  662. \def\xivpt{%
  663. \def\prm{\fam\z@\frtnrm\@dononsf}\@setfam\z@\frtnrm\tenrm\sevrm
  664. \def\pit{\fam\@ne\frtnit\@dononsf}\@setfam\@ne\frtnit\tenit\sevit
  665. \@setfam\tw@\frtnsy\tensy\sevsy
  666. \def\pbf{\@getfam\pbf\bffam\@xivpt\frtnbf\tenbf\sevbf\@dononsf}%
  667. \def\psl{\@getfam\psl\slfam\@xivpt\frtnsl\frtnsl\frtnsl\@dononsf}%
  668. \def\ptt{\@getfam\ptt\ttfam\@xivpt\frtntt\frtntt\frtntt\@dononsf}%
  669. \def\psf{\@getfam\psf\sffam\@xivpt\frtnsf\frtnsf\frtnsf\@dosfchars}%
  670. \def\psc{\@getfam\psc\scfam\@xivpt\frtnsc\frtnsc\frtnsc\@dononsf}%
  671. \@setfam\msfam\frtnms\tenms\sevms
  672. \@setfam\cmsyfam\frtncmsy\tencmsy\sevcmsy
  673. \@setfam\cmmifam\frtnmi\tenmi\sevmi
  674. \@setfam\lyfam\frtnly\tenly\sevly
  675. \@setstrut\rm}
  676.  
  677. \def\@xivpt{}
  678.  
  679. \def\xviipt{%
  680. \def\prm{\fam\z@\svtnrm\@dononsf}\@setfam\z@\svtnrm\twlrm\tenrm
  681. \def\pit{\fam\@ne\svtnit\@dononsf}\@setfam\@ne\svtnit\twlit\tenit
  682. \@setfam\tw@\svtnsy\twlsy\tensy
  683. \def\pbf{\@getfam\pbf\bffam\@xviipt\svtnbf\twlbf\tenbf\@dononsf}%
  684. \def\psl{\@getfam\psl\slfam\@xviipt\svtnsl\svtnsl\svtnsl\@dononsf}%
  685. \def\ptt{\@getfam\ptt\ttfam\@xviipt\svtntt\svtntt\svtntt\@dononsf}%
  686. \def\psf{\@getfam\psf\sffam\@xviipt\svtnsf\svtnsf\svtnsf\@dosfchars}%
  687. \def\psc{\@getfam\psc\scfam\@xviipt\svtnsc\svtnsc\svtnsc\@dononsf}%
  688. \@setfam\msfam\svtnms\twlms\tenms
  689. \@setfam\cmsyfam\svtncmsy\twlcmsy\tencmsy
  690. \@setfam\cmmifam\svtnmi\twlmi\tenmi
  691. \@setfam\lyfam\svtnly\twlly\tenly
  692. \@setstrut\rm}
  693.  
  694. \def\@xviipt{}
  695.  
  696. \def\xxpt{%
  697. \def\prm{\fam\z@\twtyrm\@dononsf}\@setfam\z@\twtyrm\frtnrm\twlrm
  698. \def\pit{\fam\@ne\twtyit\@dononsf}\@setfam\@ne\twtyit\frtnit\twlit
  699. \@setfam\tw@\twtysy\frtnsy\twlsy
  700. \def\pbf{\@getfam\pbf\bffam\@xxpt\twtybf\frtnbf\twlbf\@dononsf}%
  701. \def\psl{\@getfam\psl\slfam\@xxpt\twtysl\twtysl\twtysl\@dononsf}%
  702. \def\ptt{\@getfam\ptt\ttfam\@xxpt\twtytt\twtytt\twtytt\@dononsf}%
  703. \def\psf{\@getfam\psf\sffam\@xxpt\twtysf\twtysf\twtysf\@dosfchars}%
  704. \def\psc{\@getfam\psc\scfam\@xxpt\twtysc\twtysc\twtysc\@dononsf}%
  705. \@setfam\msfam\twtyms\frtnms\twlms
  706. \@setfam\cmsyfam\twtycmsy\frtncmsy\twlcmsy
  707. \@setfam\cmmifam\twtymi\frtnmi\twlmi
  708. \@setfam\lyfam\twtyly\frtnly\twlly
  709. \@setstrut\rm}
  710.  
  711. \def\@xxpt{}
  712.  
  713. \def\xxvpt{%
  714. \def\prm{\fam\z@\twfvrm\@dononsf}\@setfam\z@\twfvrm\svtnrm\svtnrm
  715. \def\pit{\fam\@ne\twfvit\@dononsf}\@setfam\@ne\twfvit\svtnit\svtnit
  716. \@setfam\tw@\twfvsy\svtnsy\svtnsy
  717. \def\pbf{\@getfam\pbf\bffam\@xxvpt\twfvbf\svtnbf\svtnbf\@dononsf}%
  718. \def\psl{\@getfam\psl\slfam\@xxvpt\twfvsl\twfvsl\twfvsl\@dononsf}%
  719. \def\ptt{\@getfam\ptt\ttfam\@xxvpt\twfvtt\twfvtt\twfvtt\@dononsf}%
  720. \def\psf{\@getfam\psf\sffam\@xxvpt\twfvsf\twfvsf\twfvsf\@dosfchars}%
  721. \def\psc{\@getfam\psc\scfam\@xxvpt\twfvsc\twfvsc\twfvsc\@dononsf}%
  722. \@setfam\msfam\twfvms\svtnms\svtnms
  723. \@setfam\cmsyfam\twfvcmsy\svtncmsy\svtncmsy
  724. \@setfam\cmmifam\twfvmi\svtnmi\svtnmi
  725. \@setfam\lyfam\twfvly\svtnly\svtnly
  726. \@setstrut\rm}
  727.  
  728. \def\@xxvpt{}
  729.  
  730. % SPECIAL LaTeX character definitions
  731.  
  732. % Definitions of math operators added by LaTeX
  733. \if@uselasy
  734.  \mathchardef\mho"0\lasy@30
  735.  \mathchardef\Join"3\lasy@31
  736.  \mathchardef\Box"0\lasy@32
  737.  \mathchardef\Diamond"0\lasy@33
  738.  \mathchardef\leadsto"3\lasy@3B
  739.  \mathchardef\sqsubset"3\lasy@3C
  740.  \mathchardef\sqsupset"3\lasy@3D
  741. \else
  742.  \def\mho{\@PSnofont\mho}
  743.  \def\Join{\@PSnofont\Join}
  744.  \def\Box{\@PSnofont\Box}
  745.  \def\Diamond{\@PSnofont\Diamond}
  746.  \def\leadsto{\@PSnofont\leadsto}
  747.  \def\sqsubset{\@PSnofont\sqsubset}
  748.  \def\sqsupset{\@PSnofont\sqsupset}
  749. \fi
  750.  
  751. \def\lhd{\mathbin{< \hbox to -.43em{}\hbox{\vrule 
  752.       \@width .065em \@height .55em \@depth .05em}\hbox to .2em{}}}
  753. \def\rhd{\mathbin{\hbox to .3em{}\hbox{\vrule \@width .065em \@height 
  754.        .55em \@depth .05em}\hbox to -.43em{}>}}
  755. \def\unlhd{\mathbin{\leq \hbox to -.43em{}\hbox
  756.         {\vrule \@width .065em \@height .63em \@depth -.08em}\hbox to .2em{}}}
  757. \def\unrhd{\mathbin{ \hbox to .3em{}\hbox
  758.  {\vrule \@width .065em \@height .63em \@depth -.08em}\hbox to -.43em{}\geq}}
  759.  
  760. % The dollar sign is in the same place in all the PostScript fonts
  761.  
  762. \def\${{\char`\$}}
  763.  
  764. % Definition of pound sterling sign.
  765.  
  766. \def\pounds{{\it \char"A3}}
  767.  
  768. % Definition of \copyright changed so it works in other type styles,
  769. % and so it is robust
  770. \def\copyright{\protect\pcopyright}
  771. \def\registered{\protect\pregistered}
  772. \def\trademark{\protect\ptrademark}
  773. % see pslplain.tex for definitions of \pcopyright, \pregistered, \ptrademark
  774.  
  775. % provide the correct f when a font change takes place in mathmode
  776. \def\@fixf{\ifmmode\mathcode`\f="7166\relax\fi}
  777.